package com.huang.adapter;

public class ClassAdapter {
    public static void main(String[] args) {
        Computer computer = new Computer();
        SDCard sdCard = new SDCardImpl();
        String s = computer.readSD(sdCard);
        System.out.println(s);

        System.out.println("======================");
        //新需求读取TF卡的内容，因此需要定义适配器类来解读
        String s1 = computer.readSD(new SDAdapterTF());
        System.out.println(s1);
    }

}

/**
 * 适配器类，既继承适配者，又实现目标接口类
 * 这样子适配器就能拿到适配者方法，返回给目标类
 * 类适配器是客户类有一个接口规范的情况下可用，反之不可用（SDCard必须是接口，如果不是就不能使用，因为不能双继承）。
 * 类适配器模式违背了合成复用原则。
 */
class SDAdapterTF extends TFCardImpl implements SDCard {

    @Override
    public String readSD() {
        System.out.println("adapter read TF card");
        return readTF();
    }

    @Override
    public void writeSD(String msg) {
        System.out.println("adapter writer sd card");
        writeTF(msg);
    }
}


